home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 4 / The Arsenal Files 4 (Arsenal Computer).ISO / ham / sattrk31.tgz / sattrack-3.1.tar / SatTrack / src / include / satglobalsx.h < prev    next >
C/C++ Source or Header  |  1995-03-16  |  16KB  |  310 lines

  1. /******************************************************************************/
  2. /*                                                                            */
  3. /*  Title       : satglobalsx.h                                               */
  4. /*  Author      : Manfred Bester                                              */
  5. /*  Date        : 03Mar92                                                     */
  6. /*  Last change : 15Mar95                                                     */
  7. /*                                                                            */
  8. /*  Synopsis    : Declarations of external variables and functions for        */
  9. /*                'sattrack'.                                                 */
  10. /*                                                                            */
  11. /*                                                                            */
  12. /*  SatTrack is Copyright (c) 1992, 1993, 1994, 1995 by Manfred Bester.       */
  13. /*  All Rights Reserved.                                                      */
  14. /*                                                                            */
  15. /*  Permission to use, copy, and distribute SatTrack and its documentation    */
  16. /*  in its entirety for educational, research and non-profit purposes,        */
  17. /*  without fee, and without a written agreement is hereby granted, provided  */
  18. /*  that the above copyright notice and the following three paragraphs appear */
  19. /*  in all copies. SatTrack may be modified for personal purposes, but        */
  20. /*  modified versions may NOT be distributed without prior consent of the     */
  21. /*  author.                                                                   */
  22. /*                                                                            */
  23. /*  Permission to incorporate this software into commercial products may be   */
  24. /*  obtained from the author, Dr. Manfred Bester, 1636 M. L. King Jr. Way,    */
  25. /*  Berkeley, CA 94709, USA. Note that distributing SatTrack 'bundled' in     */
  26. /*  with ANY product is considered to be a 'commercial purpose'.              */
  27. /*                                                                            */
  28. /*  IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, */
  29. /*  SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF   */
  30. /*  THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHOR HAS BEEN ADVISED  */
  31. /*  OF THE POSSIBILITY OF SUCH DAMAGE.                                        */
  32. /*                                                                            */
  33. /*  THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT      */
  34. /*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A   */
  35. /*  PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"      */
  36. /*  BASIS, AND THE AUTHOR HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, */
  37. /*  UPDATES, ENHANCEMENTS, OR MODIFICATIONS.                                  */
  38. /*                                                                            */
  39. /******************************************************************************/
  40.  
  41. #include "sattrack.h"
  42.  
  43. /******************************************************************************/
  44. /*                                                                            */
  45. /* external functions                                                         */
  46. /*                                                                            */
  47. /******************************************************************************/
  48.  
  49. extern double absol(), scalar(), getElement(), reduce();
  50.  
  51. extern long   getDayNum();
  52.  
  53. extern int    checkKeyboard(), closeSatIO(), controlISI(), decodeDate(), 
  54.               decodeTime(), getPosFromMaidenHead(), getSatListPtr(), 
  55.               initISI(), initSatIO(), 
  56.               readTle(), readTleFile(), satEclipse(), stopISI();
  57.  
  58. extern char   *dayName(), *getenv(), *monthName();
  59.  
  60. extern void   calcCityVectors(), calcCommonPerturb(), calcGroundTrack(), 
  61.               calcSDP4(), calcSGP4(), 
  62.               calendar(), changeElementUnits(), changeToNoradUnits(), 
  63.               checkArguments(), checkExit(), checkAddGroundStation(), 
  64.               checkHelp(), checkLicense(), checkPerigeeHeight(), 
  65.               checkPropModelType(), checkSwitchFrequency(), checkSwitchSat(), 
  66.               checkSwitchPage(), checkTimeZone(), checkToggleTrack(), 
  67.               cleanSatName(), clipString(), convertTime(), cross(), 
  68.               deepSpacePeriodics(), deepSpaceSecular(), disableTrack(), 
  69.               dispMessage(), dispTitle(), dispVersion(), doLiveCalcs(), 
  70.               doLongPrediction(), doMultiSatTrackLoop(), doNoradTest(), 
  71.               doShortPrediction(), doSingleSatTrackLoop(), doSleep(), 
  72.               getAziElev(), getDate(), getDefaultData(), getDoppler(), 
  73.               getEnvironment(), getGroundTrack(), getMaidenHead(), getMetStr(), 
  74.               getMode(), getNextPass(), getNoradStateVector(), getNutation(), 
  75.               getNutationSeries(), getOrbitNumber(), getPathLoss(), 
  76.               getPhase(), getPrecMatrix(), 
  77.               getRange(), getRealTime(), getRefraction(), getSatModes(), 
  78.               getSatParams(), getSatPrecession(), getSemiMajorAxis(), 
  79.               getShuttleOrbit(), getSiderealTime(), getSiteParams(), 
  80.               getSiteNameID(), getSiteVector(), getSquintAngle(), 
  81.               getStateVector(), getStateVectorX(), getSubSatPoint(), 
  82.               getSunPhaseAngle(), getSunVector(), 
  83.               getTimeArgs(), getTimeParams(), getTimeZone(), 
  84.               getTleSets(), getTopoVector(), getTrueAnomaly(), getUnixTime(), 
  85.               initDeepSpace(), initMain(), initMultiSatLiveDisp(), 
  86.               initMultiSatTrackLoop(), initRestart(), initSingleSatLiveDisp(), 
  87.               initSingleSatTrackLoop(), initSortSats(), initTerminal(), 
  88.               kepler(), keplerX(), killProgram(), loadSatData(), 
  89.               lowerCase(), mailRegistration(), makeOutputFile(), mGets(), 
  90.               milliSleep(), multMatVec(), onAlarm(), printDate(), 
  91.               printElements(), printMET(), printMode(), printPredHeader(), 
  92.               printTime(), readCities(), readSatList(), replaceBlanks(), 
  93.               saveSatData(), saveSatElements(), 
  94.               setupPrecmat(), shortString(), showMainMenu(), sortSats(), 
  95.               trackAntenna(), trackingControl(), trackRadio(), truncBlanks(), 
  96.               updateDrag(), updateGravity(), updateGravityAndDrag(), 
  97.               updateLongPeriodics(), updateShortPeriodics(), 
  98.               updateMultiSatLiveDisp(), updateSatPage(), updateSatPointer(), 
  99.               updateSingleSatLiveDisp(), upperCase();
  100.  
  101. /******************************************************************************/
  102. /*                                                                            */
  103. /* external graphics functions                                                */
  104. /*                                                                            */
  105. /******************************************************************************/
  106.  
  107. extern int    StartGraphics();
  108.  
  109. extern void   CreateGraphicsTimeOut(), QuitGraphics(), UpdateGraphics();
  110.  
  111. #ifdef XWINDOW
  112.  
  113. extern void   CalcGrid(), CalcGroundTrack(), CalcMapLocation(),
  114.               CalcVisibCircle(), CleanSegments(), 
  115.               CreateColors(), DrawFrame(), DrawMap(), DrawMir(), DrawSat(), 
  116.               DrawShuttle(), 
  117.               LoadGroundSegments(), LoadTdrsSegments(), 
  118.               RedrawMap(), ResizeMap(), 
  119.               SaveGroundSegments(), SaveTdrsSegments(), 
  120.               TimeEvent();
  121.  
  122. #endif
  123.  
  124. /******************************************************************************/
  125. /*                                                                            */
  126. /* external variables                                                         */
  127. /*                                                                            */
  128. /******************************************************************************/
  129.  
  130. extern double timeZoneHour[];
  131.  
  132. extern double precMatrix[3][3], precMatrixTr[3][3], siteRotMatGl[3][3], 
  133.               sunPosGl[3], moonPosGl[3], satPosGl[3], satPosPrec[3], 
  134.               satVelGl[3], satPosS[3], satVelS[3], sitePosGl[3], siteVelGl[3], 
  135.               localVecSatGl[3], localVecSunGl[3], localVecMoonGl[3], 
  136.               siteVecGl[3], satAttGl[3], satSquintGl[3];
  137.  
  138. extern double curTimeGl, epochDay, elsetEpochDay, elsetEpoch, 
  139.               epochMeanAnomaly, epochRaan, epochMeanMotion, curMeanMotion, 
  140.               decayRate, decayRateDot, bStarCoeff, epochArgPerigee, 
  141.               eccentricity, inclination, sunRA, sunDec, sunAzimuth, 
  142.               sunElevation, sunDist, sunPhaseAngle, sunLat, sunLong, 
  143.               moonRA, moonDec, moonAzimuth, moonElevation, moonDist, 
  144.               refOrbit, curOrbit, orbitFract, stsOrbit, stsOrbitFract, 
  145.               curMotion, curMotionX, meanAnomaly, meanAnomalyX, 
  146.               trueAnomaly, trueAnomalyX, semiMajorAxis, 
  147.               perigee, perigeeHeight, perigeePrec, apogeeHeight, satRadius, 
  148.               raanPrec, curRaan, curRaanX, curArgPerigee, curArgPerigeeX, 
  149.               curArgNodeX, curInclination, curInclinationX, 
  150.               satLat, satLong, satHeight, satAzimuth, 
  151.               satElevation, satRange, trackAzimuth, trackElevation, 
  152.               lastTrackAzi, lastTrackEle, trackAziRate, trackEleRate, 
  153.               downlinkLoss, uplinkLoss, squintAngle, rangeRate, satVelocity, 
  154.               downlinkFreq, uplinkFreq, downlinkDopp, uplinkDopp, 
  155.               freqOffset, freqStep, xponderBandwidth, xponderSign, 
  156.               perigeePhase, satPhase, maxPhase, 
  157.               attLat, attLong, siteLat, siteLong, siteAlt, effEarthRadius, 
  158.               prevDispEle, prevSatLat, defMinElevation, minElevation, 
  159.               defDuration, duration, defStepTime, stepTime, startTime, 
  160.               stopTime, realTime, utcTime, julianDate, lastJulianDateSun, 
  161.               lastJulianDatePrec, lastJulianDateNute, totPsi, totEps, 
  162.               equEquinox, launchTime, launchEpoch, timeZone, 
  163.               gmsTime, gasTime, lasTime, 
  164.               cityLat, cityLong, lastSunGraphTime, lastSatGraphHeight, 
  165.               gndTrkDist, atmPressure, ambTemperature, relHumidity, dummyd, 
  166.               cosInclination, sinInclination, cosTrueAnomaly, sinTrueAnomaly;
  167.  
  168. extern long   satNum, dayNumber, lastDayNum, launchDate, epochOrbitNum, 
  169.               orbitNum, stsOrbitNum, curYearSec, lastTrackYearSec;
  170.  
  171. extern int    satOrder[MAXSATS];
  172.  
  173. extern int    ephemerisType, launchYear, launchMonth, launchDay, 
  174.               launchHour, launchMin, launchSec, launchFlag, attitudeFlag, 
  175.               elementSet, numFreqs, freqPtr, numModes, propModelType, 
  176.               maidenHeadFlag, batchModeFlag, debugFlag, defaultsFileFlag, 
  177.               defaultsFileNum, graphicsFlag, graphicsOpenFlag, modelFlag, 
  178.               quickStartFlag, verboseFlag, timeZoneFlag, timeZones, 
  179.               eclipseCode, eclipseRise, eclipseMax, eclipseSet, 
  180.               satTypeFlag, initNorad, geoSyncFlag, elevationFlag, newRiseFlag, 
  181.               passDispFlag, countdownFlag, checkCountdown, shortPredFlag, 
  182.               satCrashFlag, preLaunchFlag, preOrbitFlag, trackingFlag, 
  183.               trackCtrlFlag, trackDispFlag, trackingEnableFlag, liveDispFlag, 
  184.               didMultDispFlag, objectNumFlag, pointerFlag, pageFlag, 
  185.               noPassFlag, xTermFlag, trueXtermFlag, gndTrkFlag, 
  186.               newGndTrkFlag, justAcquFlag, justLostFlag, 
  187.               trackObject, newTrackObjectFlag, firstLine, firstPage, 
  188.               headerCol, numCities, oldCityNum, newCityNum, numSats, 
  189.               numSatsAuto, numTle, numLines, numLinesX, numSatLines, 
  190.               numGroundStations, 
  191.               satLinePtr, transitFlag, sunTransitFlag, sunProximity, 
  192.               sunTransit, mainChoice, nX, nY, lastX, lastY, firstGraphics, 
  193.               dummyi;
  194.  
  195. extern char   modesDat[80], sitesDat[80], defaultsDat[80], defSatGroup[10], 
  196.               defTimeZoneStr[10], timeZoneStr[10], elementFile[80], 
  197.               satName[80], satTrackName[80], satAlias[80], fullSatAlias[80], 
  198.               satFileName[80], siteName[80], siteNameID[80], fullSiteName[80], 
  199.               satGroup[10], maidenHead[10], defDispType[10], defSat[40], 
  200.               defSet[40], defSetTLE[40], defSetSTS[40], defSetType[40], 
  201.               defSite[40], elementType[40], downlinkMode[8], uplinkMode[8], 
  202.               modeString[10], timeString[80], epochString[40], 
  203.               launchString[40], updateString[40], header[80], propModel[20], 
  204.               gndTrkDir[10], gndTrkCity[80], dispStr[80], callSign[25], 
  205.               termTypeX[20], antennaIO[80], radioIOA[80], radioIOB[80], 
  206.               batchTimeZone[10], batchSiteName[80], batchSatName[80], 
  207.               batchTleFile[80], batchTleType[80], batchPredType[80], 
  208.               batchStartDate[80], batchStartTime[80], batchStepTime[80], 
  209.               batchDuration[80], batchMinElev[80], batchHardcopy[80], 
  210.               helpStr[80], licenseFile[80], graphicsTitle[80], 
  211.               sattrackTitle[80], xTimeStr[80], xMetStr[25], xGndTrkStr[80];
  212.  
  213. extern char   sattrName[], sattrVersion[], sattrHeader[], predHeader[], 
  214.               dispHeader[], singleSatHelp[], multiSatHelp[], 
  215.               *visibCode[], *dayNames[], *monthNames[], *timeZoneList[], 
  216.               *strpHome, *strpTerm, *strpDisp, *strpRgst;
  217.  
  218. extern FILE   *fpr, *outFile, *antennaFile, *radioFileA, *radioFileB;
  219.  
  220. /******************************************************************************/
  221. /*                                                                            */
  222. /* structures                                                                 */
  223. /*                                                                            */
  224. /******************************************************************************/
  225.  
  226. typedef struct {
  227.     double lat, lng, alt, X, Y, Z;
  228.     char   cty[MAXCITYLEN+3];
  229.     } cityType;
  230.  
  231. extern cityType city[MAXCITIES];
  232.  
  233.  
  234. typedef struct { 
  235.     long tleSatNum;
  236.     char tleLine0[20];
  237.     char tleLine1[70];
  238.     char tleLine2[70];
  239.     } tleType;
  240.  
  241. extern tleType tle[MAXSATS];
  242.  
  243.  
  244. typedef struct { 
  245.     char satelName[MAXSATNAMELEN+3];
  246.     } satelType;
  247.  
  248. extern satelType satel[MAXSATS];
  249.  
  250.  
  251. typedef struct { 
  252.     double downlink, uplink, bandwidth, sign;
  253.     char   downlinkMode[8], uplinkMode[8];
  254.     } freqType;
  255.  
  256. extern freqType freqs[MAXFREQS];
  257.  
  258.  
  259. typedef struct { 
  260.     double minPhase, maxPhase;
  261.     char   modeStr[5];
  262.     } modeType;
  263.  
  264. extern modeType modes[MAXMODES];
  265.  
  266.  
  267. typedef struct {
  268.     double   epDay, elSetEp, launchEp, epInc, epRaan, epEcc, epArgPer;
  269.     double   epMeanAnom, epMeanMot, epDecRate, epDecRateDot, epBstar;
  270.     double   dwnlnkFrq, uplnkFrq, dwnlnkDopp, uplnkDopp;
  271.     double   attLtd, attLng, attX, attY, attZ, perigPh, maxPh;
  272.     double   semiMajAxis, raanPr, periPr, refOrb, cosInc, sinInc;
  273.     double   satOrb, stsOrb, satOrbFrac, stsOrbFrac;
  274.     double   satAzi, satEle, satLastEle, satRng, satLtd, satLng, satHgt;
  275.     double   nextRiseT, nextSetT, riseAzi, maxAzi, setAzi, maxEle, maxRng;
  276.     double   ctyLtd, ctyLng, ctyDist;
  277.     long     satIdNum, epOrbNum, satOrbNum, stsOrbNum;
  278.     int      numMd, numFr, elSet, ephType, eclCode, eclRise, eclMax, eclSet;
  279.     int      modelType, statusFl, satTypeFl, geosyncFl, crashFl;
  280.     int      launchFl, attitudeFl, prelaunchFl, preorbitFl, nopassFl;
  281.     char     satellite[20], satelliteAlias[20], ctyDir[5], ctyStr[40];
  282.     char     model[20], xMetStr[25];
  283.     freqType satFreqs[MAXFREQS];
  284.     modeType satModes[MAXMODES];
  285.     } satType;
  286.  
  287. extern satType sat[MAXSATS];
  288.  
  289.  
  290. typedef struct {
  291.     double lng, ltd;
  292.     } trackType;
  293.  
  294. extern trackType groundTrack[NSEGSGT];
  295.  
  296.  
  297. typedef struct {
  298.     double lng, ltd;
  299.     char gndStnID[40];
  300.     } stationType;
  301.  
  302. extern stationType groundStation[MAXSTATIONS];
  303.  
  304.  
  305. /******************************************************************************/
  306. /*                                                                            */
  307. /* End of include file satglobalsx.h                                          */
  308. /*                                                                            */
  309. /******************************************************************************/
  310.